home *** CD-ROM | disk | FTP | other *** search
- /*
- * Windows BMP file definitions for OpenGL.
- *
- * Written by Michael Sweet.
- */
-
- #ifndef _BITMAP_H_
- # define _BITMAP_H_
-
- /*
- * Include necessary headers.
- */
-
- # include <GL/glut.h>
- # ifdef WIN32
- # include <windows.h>
- # include <wingdi.h>
- # endif /* WIN32 */
-
- /*
- * Make this header file work with C and C++ source code...
- */
-
- # ifdef __cplusplus
- extern "C" {
- # endif /* __cplusplus */
-
-
- /*
- * Bitmap file data structures (these are defined in <wingdi.h> under
- * Windows...)
- *
- * Note that most Windows compilers will pack the following structures, so
- * when reading them under MacOS or UNIX we need to read individual fields
- * to avoid differences in alignment...
- */
-
- # ifndef WIN32
- typedef struct /**** BMP file header structure ****/
- {
- unsigned short bfType; /* Magic number for file */
- unsigned int bfSize; /* Size of file */
- unsigned short bfReserved1; /* Reserved */
- unsigned short bfReserved2; /* ... */
- unsigned int bfOffBits; /* Offset to bitmap data */
- } BITMAPFILEHEADER;
-
- # define BF_TYPE 0x4D42 /* "MB" */
-
- typedef struct /**** BMP file info structure ****/
- {
- unsigned int biSize; /* Size of info header */
- int biWidth; /* Width of image */
- int biHeight; /* Height of image */
- unsigned short biPlanes; /* Number of color planes */
- unsigned short biBitCount; /* Number of bits per pixel */
- unsigned int biCompression; /* Type of compression to use */
- unsigned int biSizeImage; /* Size of image data */
- int biXPelsPerMeter; /* X pixels per meter */
- int biYPelsPerMeter; /* Y pixels per meter */
- unsigned int biClrUsed; /* Number of colors used */
- unsigned int biClrImportant; /* Number of important colors */
- } BITMAPINFOHEADER;
-
- /*
- * Constants for the biCompression field...
- */
-
- # define BI_RGB 0 /* No compression - straight BGR data */
- # define BI_RLE8 1 /* 8-bit run-length compression */
- # define BI_RLE4 2 /* 4-bit run-length compression */
- # define BI_BITFIELDS 3 /* RGB bitmap with RGB masks */
-
- typedef struct /**** Colormap entry structure ****/
- {
- unsigned char rgbBlue; /* Blue value */
- unsigned char rgbGreen; /* Green value */
- unsigned char rgbRed; /* Red value */
- unsigned char rgbReserved; /* Reserved */
- } RGBQUAD;
-
- typedef struct /**** Bitmap information structure ****/
- {
- BITMAPINFOHEADER bmiHeader; /* Image header */
- RGBQUAD bmiColors[256]; /* Image colormap */
- } BITMAPINFO;
- # endif /* !WIN32 */
-
- /*
- * Prototypes...
- */
-
- extern GLubyte *LoadDIBitmap(const char *filename, BITMAPINFO **info);
- extern int SaveDIBitmap(const char *filename, BITMAPINFO *info,
- GLubyte *bits);
-
- # ifdef __cplusplus
- }
- # endif /* __cplusplus */
- #endif /* !_BITMAP_H_ */
-